package fwmpc.resource.impl.item;

import fwmpc.resource.IWeiXinAttributeItem;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import lombok.experimental.Accessors;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 类描述:  微信属性配置——微信配置单项描述对象——基于内存
 * <br />
 * 用于描述微信应用属性资源；Appid、AppSecret、支付账户等信息
 *
 * @author 王雷
 * @version 1.0.0
 * @date 2021/1/19 0019 上午 11:33
 */
@Data
@Slf4j
@ToString
@Accessors(chain = true)
@EqualsAndHashCode(of = "appPlatformId")
public abstract class AbstractWeiXinAttributeItem implements IWeiXinAttributeItem {
    private static final long serialVersionUID = -7675469399731650651L;
    /**
     * 属性描述：微信参数——平台标识
     *
     * @date : 2021/1/19 0019 上午 11:43
     */
    private Long appPlatformId;
    /**
     * 属性描述：微信参数——AppID
     *
     * @date : 2021/1/19 0019 上午 11:43
     */
    private String appId;

    /**
     * 属性描述：微信参数——AppSecret
     *
     * @date : 2021/1/19 0019 上午 11:43
     */
    private String appSecret;

    /**
     * 属性描述：微信参数——AppSecret
     * <br />
     * 1：小程序；2：公众号；
     *
     * @date : 2021/1/19 0019 上午 11:43
     */
    private Integer appType;

    /**
     * 属性描述：微信参数——订单Bode内容
     *
     * @date : 2021/1/22 0022 下午 5:22
     */
    private String orderBodyValue = "商品";

    /**
     * 属性描述：微信参数——退款原因
     *
     * @date : 2021/1/22 0022 下午 5:22
     */
    private String refundRemarkValue = "商品退款";

    /**
     * 属性描述：微信参数——订单支付等待周期
     * <br />
     * 单位：秒；默认：1分钟
     *
     * @date : 2021/1/22 0022 下午 5:22
     */
    private Long payWaitingCycle;

    /**
     * 属性描述：微信参数——下单回调接口
     *
     * @date : 2021/1/22 0022 下午 5:22
     */
    private String payCallBackUrl;

    /**
     * 功能描述：微信属性配置——微信配置单项描述对象——基于内存
     *
     * @author : 王雷
     * @date : 2021/1/26 0026 上午 9:52
     */
    protected AbstractWeiXinAttributeItem() {
    }

    /**
     * 功能描述：微信参数——平台标识
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    @Override
    public Long giveAppPlatformId() {
        return appPlatformId;
    }

    /**
     * 功能描述：微信参数——AppID
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    @Override
    public String giveAppId() {
        return appId;
    }

    /**
     * 功能描述：微信参数——AppSecret
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    @Override
    public String giveAppSecret() {
        return appSecret;
    }

    /**
     * 功能描述：微信参数——订单Bode内容
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    @Override
    public String giveOrderBodyValue() {
        return orderBodyValue;
    }

    /**
     * 功能描述：微信参数——退款原因
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    @Override
    public String giveRefundRemarkValue() {
        return refundRemarkValue;
    }

    /**
     * 功能描述：微信参数——订单支付等待周期
     * <br />
     * 单位：秒；默认：1分钟
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    @Override
    public Long givePayWaitingCycle() {
        return payWaitingCycle;
    }

    /**
     * 功能描述：微信参数——订单支付回调地址
     *
     * @author : 王雷
     * @date : 2021/1/16 0016 下午 9:05
     */
    @Override
    public String givePayCallBackUrl() {
        return payCallBackUrl;
    }

    /**
     * 功能描述：支付数据描述对象
     *
     * @date : 2022/6/27 0027 下午 3:52
     */
    @Override
    public Map<Long, List<MchDataBean>> giveMchDataBeanMap() {
        return new HashMap<>(16);
    }

    /**
     * 属性描述：付款数据描述对象
     *
     * @date : 2022/6/27 0027 下午 3:49
     */
    @Override
    public Map<Long, List<MchDataBean>> giveWithdrawMchDataBeanMap() {
        return new HashMap<>(16);
    }

    /**
     * 功能描述：支付数据描述对象
     *
     * @date : 2022/6/27 0027 下午 3:52
     */
    @Override
    public List<MchDataBean> giveMchDataBeanList() {
        return new ArrayList<>();
    }

    /**
     * 属性描述：付款数据描述对象
     *
     * @date : 2022/6/27 0027 下午 3:49
     */
    @Override
    public List<MchDataBean> giveWithdrawMchDataBeanList() {
        return new ArrayList<>();
    }
}
